import { ChatOllama } from "@langchain/ollama";
import { PromptTemplate } from "@langchain/core/prompts";
import { RegexParser } from "langchain/output_parsers";

const parser = new RegexParser(
  /Title:\s*(.+)\nScore:\s*(\d{1,3})/,
  ["title", "score"], // 捕获组顺序对应
  "raw" // 兜底：不匹配时把全文放在 raw
);

// 创建模板
const pt = PromptTemplate.fromTemplate(`
请严格按下面格式输出：
{format_instructions}

问题：{question}
`);

const model = new ChatOllama({
  model: "llama3",
  temperature: 0.7,
});

const chain = pt.pipe(model).pipe(parser);

const txt =
  "苹果是一种营养丰富的水果，被誉为“全方位的健康水果”。它富含多种维生素和矿物质，尤其是维生素C（增强免疫力、抗氧化）和膳食纤维（促进消化、增加饱腹感）。苹果中的多酚类物质（如槲皮素）具有抗炎和抗氧化作用，有助于降低慢性病风险。此外，苹果的钾含量较高，能帮助调节血压，而低热量（约52千卡/100克）的特点也使其成为健康饮食的理想选择。";

const res = await chain.invoke({
  question: `帮我为${txt}写个标题并给出信心分数(0-100)。`,
  format_instructions: parser.getFormatInstructions(),
});

console.log(res);
